Search

怎麼跟經理提你想要重構系統?

「不要告訴經理!」

圖片來...

  • Share this:

怎麼跟經理提你想要重構系統?

「不要告訴經理!」

圖片來源:Martin Fowler, 《Refactoring 》


其實這還要針對兩個正反面角度來補充一下:

1) 如果重構可以更快、更正確地讓你交付功能,而這一個目標上你跟經理是有共識的,那就以成果來說明,Show, Don’t Tell. 沒有人可以阻止你寫測試、重構、push 之前多 review 幾次程式碼。

只要你能滿足共同的目標(當然,初期你只能往這方向前進,可能無法做到眼前的又快又好),用成果來說明,比起發出請求允許(permission )來得對實際產品更有效益。

2) 該針對哪些東西寫自動測試、該對哪些部份進行重構,該怎麼進行重構,都考驗著你的 skill,也都有對應該知道的知識與決策依據。

無意義的重構,針對不必要的東西寫測試,真的是一種極大的浪費。在沒告訴經理之前,你想做這些事,也得先學會對應的技能,而不是憑著開發人員的一腔熱血與衝勁,卻把產品進度、目標甚至品質弄得一團糟。


其實最常見的情況,還是拿:「我該怎麼取得主管的同意,讓我能有更多的時間重構呢?」以這來當擋箭牌去迴避自己 skill 仍然不足的現實。

當你需要很多時間來進行重構,又不敢保證對應的效益、品質、進度,那任何一個主管都無法答應你的要求的。如果主管這樣都還答應你,大概是這個系統重要性不高、使用者少,既然重要性不高的系統,針對它投資重構跟自動測試,ROI 肯定也是低落的,這是風險導向而不是價值導向的決策。


重構前要有測試保護,對 legacy code 加入測試與重構本來就是帶著風險、要撰寫/改變不少程式碼與設計的動作。

每個人都會碰到 #時間不夠 ,時間不足以讓你把想做的都做上去的限制。然而你怎麼改善 #時間不夠 的問題?你做了什麼?

#又快又好 是種境界,你絕對有機會能比別人同時又快又好,當然你也得先付出代價學習、練習、持續精進技能。


要對 legacy code 重構,得先有能力在上面加入單元測試:https://tdd.best/courses/unit-testing-gracefully-with-legacy-code-202104/

有能力加入單元測試之後,如何辨識 code smell, 如何重構凸顯意圖、消除重複、簡單設計, 如何避免再寫出需要花巨量時間寫測試跟重構的 legacy code,怎麼讓新寫的程式又快又好:https://tdd.best/courses/tdd-continuous-refactoring-2021-05/

當具備做好的能力,接下來就是要追求高速、低風險的開發、重構能力:https://tdd.best/courses/extreme-developing-202104/

這三門課其實是一個整體的技能,只有針對 legacy code 為目標的技能培養才夠實務。

註:這三門課都在半年後,但名額已經快滿了(都 < 6 張),請大家視自己的需求參考看看囉。

註2: 就過去經驗,如果沒上過我的課,建議不要先挑 TDD與持續重構 當第一門課,因為一次的資訊量可能會爆炸,會讓你過份燒腦吃不消。

三門課最常見的學員感想:
1)單元測試:原來測試跟我想的不一樣,原來寫測試一點都不難。

2)極速開發:原來我寫 code 真的很慢,原來寫 code 可以這麼行雲流水地讓人舒服。

3)TDD與持續重構:原來我根本不會寫程式。我的重構不是重構。原來不是先寫測試就是 TDD。


Tags:

About author
我是 Joey Chen,闖蕩江湖的稱號是 91,熱血點火師,專門燃起大家心裡面的熱情與初衷。 目前為 Odd-e Taiwan 的負責人,同時也是 JetBrains 在台灣的培訓夥伴,至今也仍是熱愛學習與享受各種程式語言之美的 programmer。 身為敏捷教練,擅長 Agile、Scrum、LeSS 等敏捷文化與協作框架的落實與導入,如何讓大家 being agile 而不是 doing agile。同時喜歡結合各家所長,例如 Lean, Kanban 等,重點是持續改善、解決問題、端出成果,而不執著於某種特定方法論或框架。 身為技術教練,我也是極限編程(extreme programming)的狂熱者,我擅長用這些技術與工程實踐來提昇產品的品質、團隊的生產力、降低營運風險,因應市場與公司的商業目標,讓團隊能具有高適應與反應能力的基礎建設。例如 實例化需求、ATDD、BDD、TDD、重構、自動化單元測試/整合測試/驗收測試、CI/CD、code review、pair programming、mob-programming 等等。 同時,我也是推崇 極速開發 的 developer,追求從想法到產品程式碼的完成,中間的時間差能趨近於零,也就是劍隨心轉,想到哪,程式碼就長到哪的境界。從想法到實現中間的等待,其實在實務上佔了很大的 context switch 成本,如果能讓這段時間縮到最短,就能比其他人多嘗試更多種解決方案,進而挑選出最剛好的方案。 同時也是技術社群的活躍份子,從 2010 年開始連任九屆的微軟 MVP,兼任 MSDN 論壇板主,也曾經獲得年度 MSDN 文件庫刊登數量世界第一的榮耀。對微軟技術有愛,對 C# 有愛,對自動測試有愛,對重構與設計模式有愛。近年來對 Java, PHP, Python 也充滿濃厚的興趣,曾帶領客戶團隊中不會寫程式的 QA ,一起用 Python 完成超過百個 mobile UI 自動化測試。 擁有超過十年擔任開發團隊 tech leader, trainer, coach 與 mentor 的經驗,進行的企業內部與公開技術培訓課程已超過 100 場,培訓過的開發人員超過 1000 位,擔任研討會與社群活動的講師次數超過 30 次。 同時也是技術書籍的作者與譯者,與朋友合著的書籍包含《ASP.NET MVC 5:網站開發美學》、《ASP.NET MVC 4 網站開發美學》,翻譯的書籍有《單元測試的藝術-第二版》、《敏捷開發實踐》、《進入IT產業必讀的200個 .NET面試決勝題》。 如果想跟我即時互動,歡迎直接私訊或 email 至 [email protected]
請參考:https://tdd.best/about/
View all posts